#ifndef BEZIER_HPP
#define BEZIER_HPP
#include "GLHeaders.hpp"
#include "Vector.hpp"

class Bezier{
	public:
		Vector v0;
		Vector v1;
		Vector v2;
		Vector v3;

	public:
		//Constructor
		Bezier(void);
		Bezier(
				const Vector& vect0,
				const Vector& vect3);
		Bezier(
				const Vector& vect0,
				const Vector& vect1,
				const Vector& vect2,
				const Vector& vect3);

		//Accessors
		Vector GetVector(int nb) const;
		Vector GetPosition(GLfloat time) const;
		Vector GetFirstDerivative(GLfloat time) const;		
		Vector GetSecondDerivative(GLfloat time) const;
		
		//Mutators
		void SetVector(int nb, Vector &vect);

		//Special Bezier Curves
		static const Bezier ZERO;
		static const Bezier UNIT_X;
		static const Bezier UNIT_Y; 
		static const Bezier UNIT_Z; 
		static const Bezier NEGATIVE_UNIT_X; 
		static const Bezier NEGATIVE_UNIT_Y; 
		static const Bezier NEGATIVE_UNIT_Z;  
};

#endif
